package editorsvg.editor.documento;

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

/**
 * Se encarga de restaurar la posición de un conjunto de elementos de un documento.
 * @author Jorge Berjano
 */
public class RestauradorPosicionElementos {
    private ElementoEditable documento;
    private List<ElementoGrafico> elementosARestaurar;
    private List<Integer> posiciones;    
    
    public RestauradorPosicionElementos(ElementoEditable documento, ConjuntoElementos elementos) {
        this.documento = documento;
        int numeroElementos = elementos.getLista().size();        
        elementosARestaurar = new ArrayList<ElementoGrafico>(numeroElementos);
        posiciones = new ArrayList<Integer>(numeroElementos);
        
        ListIterator<ElementoGrafico> it = documento.getListaElementos().getLista().listIterator();
        while (it.hasNext()) {
            ElementoGrafico elemento = it.next();
            if (elementos.contiene(elemento)) {
                int indice = it.previousIndex();
                elementosARestaurar.add(elemento);
                posiciones.add(indice);
            }
        }        
    }
    
    public void restaurar() {
        documento.borrarElementos(elementosARestaurar);
        
        for (int i = 0; i < elementosARestaurar.size(); i++) {
            documento.agregarElemento(posiciones.get(i), elementosARestaurar.get(i));
         }
    }
    
    
    
}
